package com.ftg.wymall.comm.tool;

import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.digest.MD5;
import cn.hutool.crypto.symmetric.SymmetricAlgorithm;
import cn.hutool.crypto.symmetric.SymmetricCrypto;

/**
 * 用户密码加密
 *
 * @author kangjx
 * @version 1.0
 * @date 2023/10/20 下午1:55
 */
public class UserPasswordCrypto {

    /**
     * 根据传递过来的明文密码进行MD5加密操作
     *
     * @param password 密码
     * @return hexString
     */
    public static String md5Password(String password) {
        return MD5.create().digestHex16(password);
    }

    /**
     * 根据传递过来的明文密码进行加密操作
     *
     * @param password 密码
     * @return hexString
     */
    public static String cryptoPassword(String password) {
        byte[] key = SecureUtil.generateKey(SymmetricAlgorithm.DESede.getValue()).getEncoded();
        SymmetricCrypto des = new SymmetricCrypto(SymmetricAlgorithm.DESede, key);
        return des.encryptHex(password);
    }


    /**
     * 根据传递过来的密文密码进行解密操作
     *
     * @param password 密码
     * @return hexString
     */
    public static String decryptPassword(String password) {
        byte[] key = SecureUtil.generateKey(SymmetricAlgorithm.DESede.getValue()).getEncoded();
        SymmetricCrypto des = new SymmetricCrypto(SymmetricAlgorithm.DESede, key);
        return des.decryptStr(password);
    }
}
